主要讲了for和while两种循环,以及一些需要注意的小细节。
1 | // 输出1到n的值 |
1 | // 2.1 aabb问题 |
解释下floor(sqrt(n) + 0.5),因为浮点数运算会出现误差,如果结果是0.9999999999,floor后会是0.
因此要四舍五入。
1 | // 2.1 aabb问题 2 |
if (n < 1000) continue;是为了排除那些不足4位数的n,也可以x直接从32开始。
1 | // 3n + 1问题(错误) |
1 | // 3n + 1问题 |
因为不同的编译器,对于long long的scanf“”里的部分是不一样的,所以,在后面引入另外一个临时的长整型,解决问题。
为什么一开始会出现1呢,因为n*3 + 1溢出了。
1 | // 2.3 近似计算 |
1 | // 近似计算do-while版本 |
1 | // 阶乘之和 |
1 | // 阶乘之和 2 |
可以看到有大量的重复运算。
(10 + 2) 7 % 5 = 84 % 5 = 4
=(10 % 5 = 0)0 + (2 % 5 = 2)2 7 = 14 % 5 = 4
1 | // 数据统计(有bug) |
min, max 未初始化。
1 | // 数据统计(重定向版) |
1 | // 数据统计(fopen版) |
1 | // 数据统计 II(有Bug) |
bug在于应该把max和min定义在while里面。
Q:为什么n=0的时候会停止?
A:0几即为false。